import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;


public class IO {

	public static Grafo leEntrada(String fileName){
		Grafo grafo = null;
		try{
			FileInputStream fstream = new FileInputStream(fileName);
			DataInputStream in = new DataInputStream(fstream);
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			String linha;
						
			//Leitura do arquivo
			//numero de vertices
			linha = br.readLine();
			int numVertices = Integer.valueOf(linha.substring(6));
			//numero de arestar
			linha = br.readLine();
			int numArestas = Integer.valueOf(linha.substring(6));
					
			grafo = new Grafo(numVertices);
			
			//arestas
			int no1, no2, peso, index1, index2, indexPeso;
			for(int i = 0; i < numArestas; i++){
				linha = br.readLine();
				
				index1 = linha.indexOf(" ") + 1;
				index2 = linha.indexOf(" ", index1) + 1;
				indexPeso = linha.indexOf(" ", index2) + 1;
				
				no1 = Integer.valueOf(linha.substring(index1, index2 - 1));
				no2 = Integer.valueOf(linha.substring(index2, indexPeso - 1));
				peso = Integer.valueOf(linha.substring(indexPeso));

				grafo.insereAresta(no1, no2, peso);
			}
			
			//le linha em branco
			linha = br.readLine();
			
			//terminais
			linha = br.readLine();
			int numTerminais = Integer.valueOf(linha.substring(10));
			int noTerminal;
			for(int i = 0; i < numTerminais; i++){
				linha = br.readLine();
				noTerminal = Integer.valueOf(linha.substring(2));
				grafo.insereTerminal(noTerminal);
			}
			
			in.close();
		}catch (Exception e){
			System.err.println("Error: " + e.getMessage());
		}
		return grafo;
	}

}
